[iOS 10][小ネタ] UIScrollView に refreshControl が追加されました!
大したことじゃないけれど
iOS 10 から UIScrollView のプロパティに refreshControl が追加されました。
@available(iOS 10.0, *) open var refreshControl: UIRefreshControl?
画面を下に引っ張ってコンテンツを更新するアレです。
サンプルコード
class ViewController: UIViewController { @IBOutlet weak var scrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() setup() } func setup() { let refreshControl = UIRefreshControl() refreshControl.addTarget(self, action: #selector(handleRefresh), for: .valueChanged) scrollView.refreshControl = refreshControl } func handleRefresh(sender : UIRefreshControl) { // do something. sender.endRefreshing() } }
上記のように、生成した UIRefreshControl のインスタンスを scrollView の refreshControl に代入します。
このプロパティの初期値は nil
です。
比較
これまでは以下のように addSubview する必要がありました。
Before
scrollView.addSubview(refreshControl)
After
scrollView.refreshControl = refreshControl
これだけの違いです。
でもコードで addSubview しなくてよくなったのは嬉しいですね。
addSubview は何回も無駄にやってしまっているのではないかと不安になるときがありますからね!(私だけかな?)
動作確認したところ、更新終了時のグルグルアニメーションが若干スムーズ(?)になっているような気がしました。
addSubview 封じ がどこかで効いているようです。
さいごに
UIScrollView のプロパティに追加されたことで、継承クラスの UITableView や UICollectionView にも適用することができます。
UIRefreshControl を使用する際は addSubView ではなく、プロパティを利用するようにしてみてはいかがでしょうか。
※ UITableViewController には既に refreshControl プロパティが存在します。
ミレニアム・ファルコン製作日記 #38
38 号 表紙
パーツ
成果
今回の作業は以下の 4 つでした。
- 搭乗ランプのライトを取り付ける
- ランプを準備する
- ヒンジを組み立てる
- ランプをヒンジで連結する
細かいパーツが大量に送られてきました。
今回と次回で搭乗ランプを一気に組み立てます。
搭乗ランプ はミレニアム・ファルコンで乗り降りする部分です。
ウィ〜ン、プッシュ〜みたいな感じで開いたり閉じたりする部分。
可動部分なのでパーツが多いわけですね。
搭乗ランプが開くと内部が LED ライトで照らされるようで、その回路部分を「ランプ構造を支えるセクション」に取り付けました。
また、ランプの上端と外殻プレートを連結するヒンジも組み立てました。
これは強度を持たせるためにキャストメタル製とのことです。
いいと思います。
スター・ウォーズの不思議
ダース・ベイダーとライトセーバー。
ベイダー と セーバー。
vader と saber。
英語表記 2 文字目の a
の発音はどちらも éɪ(エイ)
のはず。(たぶん)
なぜ日本語表記では、
ライトセイバーではなく、ライトセーバーなのか。
ダース・ベーダーではなく、ダース・ベイダーなのか。
ご存知の方がいたら教えてください。
それではまた次回。
May the Force be with you!